package com.ld.hpfs.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public interface DealAbandonService {

	List<HashMap<String, Object>> getdealAbandonList(HashMap<String, Object> param);

	void dealAbandonInfoSave(HashMap<String, Object> param);

	List<HashMap<String,Object>> getTestInfo(HashMap<String, Object> param);

	void docTypeUpdate(HashMap<String, Object> param);

	void deleteDealabandonByDocNo(HashMap<String, Object> param);

	void setDocStatus(HashMap<String, Object> param);

	HashMap<String, Object> getInfoByDoc(HashMap<String,Object> param);

	List<HashMap<String, Object>> getInfo(HashMap<String, Object> param);

	void infoDelete(HashMap<String, Object> param);

	List<HashMap<String, Object>> getDocStatusInfo(HashMap<String, Object> param);

	List<HashMap<String, Object>> getInvoiceInfo(HashMap<String, Object> param);

	void updateInvoiceInfo(HashMap<String, Object> param);

	/**
	 * 根据userId 和companyId得到该用户在该公司的所有红废审核权限
	 * @param param 包含userId和companyId
	 * @return 包含ABANDON_ROLE
	 */
	List<HashMap<String, Object>> getCheckRights(HashMap<String, Object> param);
	
	/**
	 * 根据单据号，红废票号和companyId（还可加上申请人id）得到此票据的状态
	 * @param param 包含DOCUMENT_NO，VOIDED_DOC_ID和companyId（还可加上userId）
	 * @return 包含STATUS, DOC_TYPE_CODE, INVOICE_NO_BEGIN as numStart, INVOICE_CODE as num,
	 * VOID_FLAG as type
	 */
	HashMap<String, Object> getStatusByDoc(HashMap<String, Object> param);
	
	/**
	 * 根据单据号，红废票号，companyId更新票据的审核状态，编辑者及编辑时间
	 * 如审核通过，更改原单据为未开票
	 * @param param 包含docs，voids，companyId，userId，update_name
	 * @param agree 同意/否决
	 */
	void updateStatus(HashMap<String, Object> param, boolean agree);

	HashMap<String, Object> getInvoiceStatus(HashMap<String, Object> docStatue);
	
	public ArrayList<HashMap<String, Object>> getCheckLevel1(String cpnId);
	
	public ArrayList<HashMap<String, Object>> getCheckLevel2(String cpnId);

	ArrayList<HashMap<String, Object>> getAbandonType(HashMap<String, Object> param);

	/**
	 * 获取申请者信息
	 */
	HashMap<String, Object> getMsgForApplicant(String userId);

	int getLastInsert(HashMap<String, Object> param);

	void updateBaseOnSp(HashMap<String, Object> param);
	// 取得发票号码区间合计金额
	HashMap<String, Object> getAbandonCount(HashMap<String, Object> param);

	ArrayList<HashMap<String, Object>> getAbandonNo(HashMap<String, Object> param);
	// 红废一般查询客户列表
	ArrayList<HashMap<String, Object>> getDealAbandonCust(
			HashMap<String, Object> param);
	// 更新红废票
	void dealAbandonUpdate(HashMap<String, Object> param);
	// 查看当前用户红废权限
	ArrayList<HashMap<String, Object>> checkEditRight(HashMap<String, Object> param);

	int getAandonStatus(HashMap<String, Object> param);
	
	ArrayList<HashMap<String,Object>> getInvoiceNumBegin(HashMap<String, Object> param);
	
	ArrayList<HashMap<String,Object>> getInvoiceNumEnd(HashMap<String, Object> param);
	
	ArrayList<HashMap<String,Object>> getInvoiceCodetoAbandon(HashMap<String, Object> param);
	
	
	List<HashMap<String, Object>> getInoviceIdEnd();
	
	ArrayList<HashMap<String,Object>> getRoleById(HashMap<String, Object> param);
}
